 
Ext.define('Model.TipoRol', {
    extend: 'Ext.data.Model',
    fields: [ {
			name: 'tipoRol'
		}]
}); 
 
 
Ext.define('Writer.Form', {  extend: 'Ext.form.Panel',  alias: 'widget.writerform',   requires: ['Ext.form.field.Text'],

    initComponent: function(){
        
        Ext.apply(this, {
            activeRecord: null,  iconCls: 'icon-rol',  frame: true,   title: 'ADMINISTRACION DE ROLES',  defaultType: 'textfield',  bodyPadding: 25,
            fieldDefaults: { anchor: '100%',},
            items: [{	fieldLabel: 'Id'
						,name: 'id',
						type: 'int',	
						hidden: true,
					},{	fieldLabel: 'Nombre Rol',
						name: 'nombreRol',	
						allowBlank: false
					},{	fieldLabel: 'Descripcion',name: 'descripcion',}
					,{
						xtype: 'combobox',
						name: 'tipoRol',
						fieldLabel: 'Tipo',
						displayField: 'tipoRol',
						store: Ext.create('Ext.data.Store', {
								model: 'Model.TipoRol',
								autoLoad: true,
								proxy: {
									type: 'ajax',
									url: 'listarTipoRol',
									reader: {
										type: 'json',
										successProperty: 'success',
										root: 'data',
										messageProperty: 'message'
									}
								}        
								
							}),
					   
					}],
					dockedItems: [{
									xtype: 'toolbar',
									items: [
									{	//iconCls: 'icon-reset',	
										//text: 'Reset',	
										//tooltip:'Resetear el formulario',	
										//scope: this,	
										//handler: this.onReset
									},{	iconCls: 'icon-user-add',	
										itemId: 'create',	
										text: 'Crear',
										tooltip:'Crear un rol nuevo',	
										disabled: true,
										hidden: true,									
										scope: this,	
										handler: this.onCreate
									},{	iconCls: 'icon-save',
									itemId: 'save',
									text: 'Guardar',
									tooltip:'Modificar el rol seleccionado',
									hidden: true,
									disabled: true,
									scope: this, 	
									handler: this.onSave
								},{	iconCls: 'icon-user-delete',
									itemId: 'delete',
									hidden: true,
									disabled: true,	
									tooltip:'Eliminar el rol seleccionado',
									scope: this,
									text: 'Eliminar',	
									handler: this.onDelete
								},{	iconCls: 'icon-user',
									itemId: 'users',
									text: 'Usuarios',
									tooltip:'Asignar - Desasignar Usuarios al rol seleccionado',	
									hidden: true,
									disabled: true,
									scope: this, 	
									handler: this.onUsuarios
								},{
									iconCls: 'icon-permiso',
									itemId: 'permisos',	
									text: 'Permisos',
									tooltip:'Asignar - Desasignar Permisos al rol seleccionado',
									hidden: true,	
									scope: this,
									disabled: true, 
									handler: this.onPermisos
								}]
								},{
									weight: 1,
									xtype: 'toolbar',	
									dock: 'bottom',		
									items: ['->', {
									iconCls: 'icon-tipoItem',
									itemId: 'tipoItem',
									text: 'Tipos Item',
									tooltip:'Asignar - Desasignar TiposItem al rol seleccionado',
									hidden: true,
									scope: this,
									disabled: true, 
									handler: this.onTiposItem
								},{
									iconCls: 'icon-fase',
									itemId: 'fase',
									text: 'Fases',
									tooltip:'Asignar - Desasignar Fases al rol seleccionado',
									hidden: true,
									disabled: true,
									scope: this, 
									handler: this.onFases
								},{
									iconCls: 'icon-proyecto',
									itemId: 'proyecto',
									tooltip:'Asignar - Desasignar Proyectos al rol seleccionado',
									text: 'Proyectos',
									hidden: true,
									disabled: true,
									scope: this, 
									handler: this.onProyectos
								},{	iconCls: 'icon-reset',	
										text: 'Reset',	
										tooltip:'Resetear el formulario',	
										scope: this,	
										handler: this.onReset
									}]
							}]	});
				this.callParent();
    },

    setActiveRecord: function(record){
        this.activeRecord = record;
        if (record) { 			
            if (!this.down('#save').isDisabled()){
				this.down('#save').show();			
			}			
            if (!this.down('#delete').isDisabled()){
				this.down('#delete').show();			
			}
            if (!this.down('#users').isDisabled()){
				this.down('#users').show();			
			}  
            if (!this.down('#permisos').isDisabled()){
				this.down('#permisos').show();			
			}
            if (!this.down('#tipoItem').isDisabled()){
				this.down('#tipoItem').show();			
			}
            if (!this.down('#fase').isDisabled()){
				this.down('#fase').show();			
			}  
            if (!this.down('#proyecto').isDisabled()){
				this.down('#proyecto').show();			
			}			
            this.down('#tipoItem').show();
            this.down('#fase').show();
            this.down('#proyecto').show();				  			 
			this.down('#create').hide();      
			this.getForm().loadRecord(record);
        } else {
			this.down('#save').hide();  
			this.down('#delete').hide();    
			this.down('#users').hide();   
			this.down('#permisos').hide();
            this.down('#tipoItem').hide();
            this.down('#proyecto').hide();
            this.down('#fase').hide();			
            if (!this.down('#create').isDisabled()){
				this.down('#create').show();			
			} 
			this.getForm().reset();
        }
    },

    onSave: function(){
        var form = this.getForm();
                    form.submit({                        
                        url: 'modificarRol',                        
                        params: {	submit: 'submit'	},
						method: "post",
                        success: function(form, action) {
									form.reset();
									Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>',   
													msg: 'Rol modificado satisfactoriamente',	icon: 'ext-mb-ok',
									});		this.fireEvent('refresh');
						}, scope: this,
                        failure: function(form, action) {								
									Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>',   
													msg: 'No se ha podido modificar el rol', 	icon: 'ext-mb-error',
									});
                        }                                                   
                    });                    				
    },
    
    onCreate: function(){
        var form = this.getForm();
                    form.submit({                        
                        url: 'crearRol',
                        params: {	submit: 'submit'	},
						method: "post",
                        success: function(form, action) {
								form.reset();
								Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>', //<- el título del diálogo  
												msg: 'Rol creado satisfactoriamente', //<- El mensaje  
												icon: 'ext-mb-ok',
								});		this.fireEvent('refresh');                           
                        }, scope: this,                     
                        failure: function(form, action) {
									Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>', //<- el título del diálogo  
													msg: 'No se ha podido crear el rol', 	icon: 'ext-mb-error',
									});
                        }
                    });
    },

    onDelete: function(){ 
        var form = this.getForm();
                    form.submit({                        
                        url: 'eliminarRol',
                        params: {	submit: 'submit'	},
						method: "post",
                        success: function(form, action) {
								form.reset();
								Ext.Msg.show({ 		title: '<br><p align="center"><b>ALPHA MANAGER</b></p>', //<- el título del diálogo  
													msg: 'Rol eliminado satisfactoriamente', 	icon: 'ext-mb-ok',
								});		this.fireEvent('refresh');                           
                        },  scope: this,                       
                        failure: function(form, action) {
									Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>', //<- el título del diálogo  
													msg: 'No se ha podido eliminar el rol', 	icon: 'ext-mb-error',
									});
                        }
                    });
    },
    
	onUsuarios: function(){
			var form = this.getForm();
			this.fireEvent('ddUsuarios', form.getValues(true));            
	},
	
	onPermisos: function(){
			var form = this.getForm();
			this.fireEvent('ddPermisos', form.getValues(true));            
	},
		
	onTiposItem: function(){
			var form = this.getForm();
			this.fireEvent('ddTiposItem', form.getValues(true));            
	},	

	onFases: function(){
			var form = this.getForm();
			this.fireEvent('ddFases', form.getValues(true));            
	},
	
	onProyectos: function(){
			var form = this.getForm();
			this.fireEvent('ddProyectos', form.getValues(true));            
	},
	
    onReset: function(){
        this.setActiveRecord(null);
        this.getForm().reset();
        this.fireEvent('refresh'); 
    }    
});

Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext.ux', 'static/ux');

Ext.define('Writer.Grid', {  extend: 'Ext.grid.Panel',  alias: 'widget.writergrid',
    requires: [ 'Ext.grid.plugin.CellEditing',
				'Ext.form.field.Text',
				'Ext.ux.grid.FiltersFeature',
				'Ext.toolbar.TextItem' ],

    initComponent: function(){
        this.editing = Ext.create('Ext.grid.plugin.CellEditing');
        
        var filters = {		ftype: 'filters',	local: true,	};

        Ext.apply(this, {
            iconCls: 'icon-grid', 
            //frame: true, 
            plugins: [this.editing],  
            features: [filters],
            dockedItems: [{ 
						weight: 1, 
						xtype: 'toolbar',  
						dock: 'bottom',  
						items: ['->',  {
								iconCls: 'icon-lista',
								text: 'Listar',
								tooltip:'Para listado perzonalizado, configure los filtros de las columnas',
								scope: this,
								handler: this.onListar
							},{   
								iconCls: 'icon-refresh',  
								text: 'Actualizar',
								tooltip:'Actualizar la lista',  
								scope: this,  
								handler: this.onRefresh	
							}]
			}],
            columns: [	{		text: 'Id',  width: 40,  dataIndex: 'id',  filter: true,  },
						{		header: 'Nombre Rol',    width: 150,     dataIndex: 'nombreRol',     filter: true,   },
						{		header: 'Descripcion',   flex:1,   filter: true,   dataIndex: 'descripcion',      },
						{		header: 'Tipo', width: 110,   filter: true,   dataIndex: 'tipoRol',      },
						{		header: 'Fecha Creacion', width: 110,  filter: true,   dataIndex: 'fecha',
						}]
        });
        this.callParent();
        this.getSelectionModel().on('selectionchange', this.onSelectChange, this);
    },
    
    onListar: function(){
		this.getSelectionModel().clearSelections();
		this.store.load();
    },    
    
    onRefresh: function(){
		this.getSelectionModel().clearSelections();
		this.store.load();
	},
});

Ext.define('Writer.Person', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'id',
        type: 'int'
    }, 'nombreRol', 'descripcion','fecha','tipoRol']
});

Ext.require([
    'Ext.data.*',
    'Ext.tip.QuickTipManager',
    'Ext.window.MessageBox',
    'Ext.grid.*',
    'Ext.tab.*',
    'Ext.window.*',
    'Ext.tip.*',
    'Ext.layout.container.Border',
    'Ext.dd.*',
    'Ext.form.field.ComboBox',
    'Ext.form.FieldSet'
]);

Ext.define('DataUsuario', {
    extend: 'Ext.data.Model',
    fields: ['nombreUsuario']
});

Ext.define('DataTipoItem', {
    extend: 'Ext.data.Model',
    fields: [{
			name: 'id',
			type: 'int'
		},'nombreTipoItem']
});

Ext.define('DataFases', {
    extend: 'Ext.data.Model',
    fields: [{
			name: 'id',
			type: 'int'
		},'nombreFase']
});

Ext.define('DataProyectos', {
    extend: 'Ext.data.Model',
    fields: [{
			name: 'id',
			type: 'int'
		},'nombreProyecto']
});

Ext.define('DataPermiso', {
    extend: 'Ext.data.Model',
    fields: ['nombrePermiso']
});

Ext.onReady(function(){
    Ext.tip.QuickTipManager.init();    
    
    	function getPermisos()
		{
			Ext.Ajax.request({
					url: 'listarPermisos_Logueado',
					method: 'GET',
					success: function(response) {
						var jsonData = Ext.JSON.decode(response.responseText);
						var resultMessage = jsonData['data'];
						if(extraer(resultMessage,'{','crear-rol')){	
							win.child('#form').down('#create').enable();
							win.child('#form').down('#create').show();
												
						}
						if(extraer(resultMessage,'{','eliminar-rol')){	
							win.child('#form').down('#delete').enable();
							
						}
						if(extraer(resultMessage,'{','modificar-rol')){	
							win.child('#form').down('#save').enable();
							
						}
						if(extraer(resultMessage,'{','asignar-desasignar-rol')){	
							win.child('#form').down('#users').enable();
							
						}
						if(extraer(resultMessage,'{','asignar-desasignar-permiso')){	
							win.child('#form').down('#permisos').enable();
							
						}
						if(extraer(resultMessage,'{','asignar-desasignar-tipo-item-rol')){	
							win.child('#form').down('#tipoItem').enable();
							
						}
						if(extraer(resultMessage,'{','asignar-desasignar-proyecto-rol')){	
							win.child('#form').down('#proyecto').enable();
							
						}
						if(extraer(resultMessage,'{','asignar-desasignar-fase-rol')){	
							win.child('#form').down('#fase').enable();
							
						}																																					
						
					}/*,
					failure: function() {
						Ext.Msg.alert('Alpha Manager','No se obtuvieron los permisos')
												
					}*/
			});
		}
    
   
    var store = Ext.create('Ext.data.Store', {
        model: 'Writer.Person',
        //autoLoad: true,  autoSync: true,
        proxy: {
            type: 'ajax',
            url: 'listarRoles',
            reader: {
                type: 'json',
                successProperty: 'success',
                root: 'data',
                messageProperty: 'message'
            },
        },  
        sorters: [{
            property: 'id',
            direction: 'ASC'
        }]    
    });
        win = Ext.create('widget.panel', {
			renderTo: 'comboRol',
            width: 1050,  height: 380,
            layout: 'border',
            //bodyStyle: 'padding: 3px;',
			y: 30,	x: 130,
            items: [{
                    region: 'west',		xtype: 'writerform',	itemId: 'form',		width: 370,
					listeners: {
						refresh: function() {
							win.child('#grid').onRefresh();		
						},
						ddProyectos: function(data){
							var grid1, grid2;
							nombre = extraer(data, '&nombreRol=', '&descripcion=');		id = extraer(data, 'id=', '&');
                            winProyectos = Ext.create('widget.window', {
								iconCls: 'icon-proyecto',
								title: 'Drag and Drop - Asignar/Desasignar Proyectos al Rol: ' + nombre,
								closable: true,
								plain: true,
								layout: 'fit',
								items: [displayPanel = Ext.create('Ext.Panel', {
											width : 550,	height : 250,
											layout  : {	type: 'hbox',	align: 'stretch'	},
											defaults  : { flex : 1 }, 
											items : [
													grid1 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'firstGridDDGroup',
																	dropGroup: 'secondGridDDGroup'
															},
														},
														store: Ext.create('Ext.data.Store', {
																	model: 'DataProyectos',
																	autoLoad: true,
																	proxy: {
																		type: 'ajax',
																		url: 'listarNoProyectos_Rol/'+ id,
																		reader: {
																			type: 'json',
																			successProperty: 'success',
																			root: 'data',
																			messageProperty: 'message'
																		},

																	}      
																}),
														columns:  [ {text: "Id", hidden:true, dataIndex: 'id'},
																	{text: "<b>Proyectos No Asignados</b>", flex: 1, sortable: true, dataIndex: 'nombreProyecto'} ],
														stripeRows : true
													}),
													grid2 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'secondGridDDGroup',
																	dropGroup: 'firstGridDDGroup'
																},
														},
														store: Ext.create('Ext.data.Store', {
																model: 'DataProyectos',
																autoLoad: true,
																proxy: {
																	type: 'ajax',
																	url: 'listarProyectos_Rol/'+ id,
																	reader: {
																		type: 'json',
																		successProperty: 'success',
																		root: 'data',
																		messageProperty: 'message'
																	},

																}       
														}),
														columns  : [ 	{text: "Id", hidden:true,  dataIndex: 'id'},
																		{text: "<b>Proyectos Asignados</b>", flex: 1, sortable: true, dataIndex: 'nombreProyecto'} ],
														stripeRows : true
													})
											],
											dockedItems: {
												xtype: 'toolbar',
												dock: 'bottom',
												items: ['->', // Fill
												{
													text: 'Guardar',
													iconCls: 'icon-save',
													handler: function(){
														grid2.getSelectionModel().selectAll();
														longitud= grid2.getSelectionModel().getSelection().length;
														lista_proyectos = new Array(longitud);
														i=0;
														while(i < longitud)
														{											
															lista_proyectos[i]=grid2.getSelectionModel().getSelection()[i].data['id'];
															i=i+1;
														}	
														grid2.getSelectionModel().deselectAll();											
														Ext.Ajax.request({
															url: 'asignarProyectos_desdeABMRol',
															params: {
																id_rol: id,
																lista_proyectos:Ext.encode(lista_proyectos)
															},
															success: function() {
																Ext.Msg.show({ 		title: '<br><p align="center"><b>ALPHA MANAGER</b></p>', //<- el título del diálogo  
																					msg: 'Proyectos asignados correctamente', 	icon: 'ext-mb-ok',
																});	
															},
															failure: function() {
																Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>',   
																				msg: 'Error en la asignacion de Proyectos ', 	icon: 'ext-mb-error',
																});
															}
														})
												}
												}]
											}
									}),{
									border: false
								}]
							});					
							winProyectos.show();						
						},
						ddFases: function(data){
							var grid1, grid2;
							nombre = extraer(data, '&nombreRol=', '&descripcion=');		id = extraer(data, 'id=', '&');
                            winFases = Ext.create('widget.window', {
								iconCls: 'icon-fase',
								title: 'Drag and Drop - Asignar/Desasignar Fases al Rol: ' + nombre,
								closable: true,
								plain: true,
								layout: 'fit',
								items: [displayPanel = Ext.create('Ext.Panel', {
											width : 550,	height : 250,
											layout  : {	type: 'hbox',	align: 'stretch'	},
											defaults  : { flex : 1 }, 
											items : [
													grid1 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'firstGridDDGroup',
																	dropGroup: 'secondGridDDGroup'
															},
														},
														store: Ext.create('Ext.data.Store', {
																	model: 'DataFases',
																	autoLoad: true,
																	proxy: {
																		type: 'ajax',
																		url: 'listarNoFases_Rol/'+ id,
																		reader: {
																			type: 'json',
																			successProperty: 'success',
																			root: 'data',
																			messageProperty: 'message'
																		},

																	}      
																}),
														columns:  [ 	{text: "Id", hidden:true, dataIndex: 'id'},
																		{text: "<b>Fases No Asignadas</b>", flex: 1, sortable: true, dataIndex: 'nombreFase'} ],
														stripeRows : true
													}),
													grid2 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'secondGridDDGroup',
																	dropGroup: 'firstGridDDGroup'
																},
														},
														store: Ext.create('Ext.data.Store', {
																model: 'DataFases',
																autoLoad: true,
																proxy: {
																	type: 'ajax',
																	url: 'listarFases_Rol/'+ id,
																	reader: {
																		type: 'json',
																		successProperty: 'success',
																		root: 'data',
																		messageProperty: 'message'
																	},

																}       
														}),
														columns  : [ 	{text: "Id", hidden:true, dataIndex: 'id'},
																		{text: "<b>Fases Asignadas</b>", flex: 1, sortable: true, dataIndex: 'nombreFase'} ],
														stripeRows : true
													})
											],
											dockedItems: {
												xtype: 'toolbar',
												dock: 'bottom',
												items: ['->', // Fill
												{
													text: 'Guardar',
													iconCls: 'icon-save',
													handler: function(){
														grid2.getSelectionModel().selectAll();
														longitud= grid2.getSelectionModel().getSelection().length;
														lista_fases = new Array(longitud);
														i=0;
														while(i < longitud)
														{											
															lista_fases[i]=grid2.getSelectionModel().getSelection()[i].data['id'];
															i=i+1;
														}	
														grid2.getSelectionModel().deselectAll();											
														Ext.Ajax.request({
															url: 'asignarFases_desdeABMRol',
															params: {
																id_rol: id,
																lista_fases:Ext.encode(lista_fases)
															},
															success: function() {
																Ext.Msg.show({ 		title: '<br><p align="center"><b>ALPHA MANAGER</b></p>', //<- el título del diálogo  
																					msg: 'Fases asignadas correctamente', 	icon: 'ext-mb-ok',
																});	
															},
															failure: function() {
																Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>',   
																				msg: 'Error en la asignacion de Fases ', 	icon: 'ext-mb-error',
																});
															}
														})
												}
												}]
											}
									}),{
									border: false
								}]
							});					
							winFases.show();						
						},						
						ddTiposItem: function(data){
							var grid1, grid2;
							nombre = extraer(data, '&nombreRol=', '&descripcion=');		id = extraer(data, 'id=', '&');
                            winTipoItem = Ext.create('widget.window', {
								iconCls: 'icon-tipoItem',
								title: 'Drag and Drop - Asignar/Desasignar Tipos de Item al Rol: ' + nombre,
								closable: true,
								plain: true,
								layout: 'fit',
								items: [displayPanel = Ext.create('Ext.Panel', {
											width : 550,	height : 250,
											layout  : {	type: 'hbox',	align: 'stretch'	},
											defaults  : { flex : 1 }, 
											items : [
													grid1 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'firstGridDDGroup',
																	dropGroup: 'secondGridDDGroup'
															},
														},
														store: Ext.create('Ext.data.Store', {
																	model: 'DataTipoItem',
																	autoLoad: true,
																	proxy: {
																		type: 'ajax',
																		url: 'listarNoTipoItem_Rol/'+ id,
																		reader: {
																			type: 'json',
																			successProperty: 'success',
																			root: 'data',
																			messageProperty: 'message'
																		},

																	}      
																}),
														columns:  [ {text: "Id", hidden:true, dataIndex: 'id'},
																	{text: "<b>Tipos de Items No Asignados</b>", flex: 1, sortable: true, dataIndex: 'nombreTipoItem'} ],
														stripeRows : true
													}),
													grid2 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'secondGridDDGroup',
																	dropGroup: 'firstGridDDGroup'
																},
														},
														store: Ext.create('Ext.data.Store', {
																model: 'DataTipoItem',
																autoLoad: true,
																proxy: {
																	type: 'ajax',
																	url: 'listarTipoItem_Rol/'+ id,
																	reader: {
																		type: 'json',
																		successProperty: 'success',
																		root: 'data',
																		messageProperty: 'message'
																	},

																}       
														}),
														columns  : [ {text: "Id", hidden:true, dataIndex: 'id'},
																	{text: "<b>Tipos de Item Asignados</b>", flex: 1, sortable: true, dataIndex: 'nombreTipoItem'} ],
														stripeRows : true
													})
											],
											dockedItems: {
												xtype: 'toolbar',
												dock: 'bottom',
												items: ['->', // Fill
												{
													text: 'Guardar',
													iconCls: 'icon-save',
													handler: function(){
														grid2.getSelectionModel().selectAll();
														longitud= grid2.getSelectionModel().getSelection().length;
														lista_tiposItem = new Array(longitud);
														i=0;
														while(i < longitud)
														{											
															lista_tiposItem[i]=grid2.getSelectionModel().getSelection()[i].data['id'];
															i=i+1;
														}	
														grid2.getSelectionModel().deselectAll();											
														Ext.Ajax.request({
															url: 'asignarTiposItem_desdeABMRol',
															params: {
																id_rol: id,
																lista_tiposItem:Ext.encode(lista_tiposItem)
															},
															success: function() {
																Ext.Msg.show({ 		title: '<br><p align="center"><b>ALPHA MANAGER</b></p>', //<- el título del diálogo  
																					msg: 'Tipos de Item asignados correctamente', 	icon: 'ext-mb-ok',
																});	
															},
															failure: function() {
																Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>',   
																				msg: 'Error en la asignacion de Tipos de Item ', 	icon: 'ext-mb-error',
																});
															}
														})
												}
												}]
											}
									}),{
									border: false
								}]
							});					
							winTipoItem.show();						
						},						
						ddUsuarios: function(data){
							var grid1, grid2;
							nombre = extraer(data, '&nombreRol=', '&descripcion=');		id = extraer(data, 'id=', '&');
                            win2 = Ext.create('widget.window', {
								iconCls: 'icon-user',
								title: 'Drag and Drop - Asignar/Desasignar Usuarios al Rol: ' + nombre,
								closable: true,
								plain: true,
								layout: 'fit',
								items: [displayPanel = Ext.create('Ext.Panel', {
											width : 550,	height : 250,
											layout  : {	type: 'hbox',	align: 'stretch'	},
											defaults  : { flex : 1 }, 
											items : [
													grid1 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'firstGridDDGroup',
																	dropGroup: 'secondGridDDGroup'
															},
														},
														store: Ext.create('Ext.data.Store', {
																	model: 'DataUsuario',
																	autoLoad: true,
																	proxy: {
																		type: 'ajax',
																		url: 'listarNoUsuarios_Rol/'+ id,
																		reader: {
																			type: 'json',
																			successProperty: 'success',
																			root: 'data',
																			messageProperty: 'message'
																		},

																	}      
																}),
														columns:  [ {text: "<b>Usuarios No Asignados</b>", flex: 1, sortable: true, dataIndex: 'nombreUsuario'} ],
														stripeRows : true
													}),
													grid2 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'secondGridDDGroup',
																	dropGroup: 'firstGridDDGroup'
																},
														},
														store: Ext.create('Ext.data.Store', {
																model: 'DataUsuario',
																autoLoad: true,
																proxy: {
																	type: 'ajax',
																	url: 'listarUsuarios_Rol/'+ id,
																	reader: {
																		type: 'json',
																		successProperty: 'success',
																		root: 'data',
																		messageProperty: 'message'
																	},

																}       
														}),
														columns  : [ {text: "<b>Usuarios Asignados</b>", flex: 1, sortable: true, dataIndex: 'nombreUsuario'} ],
														stripeRows : true
													})
											],
											dockedItems: {
												xtype: 'toolbar',
												dock: 'bottom',
												items: ['->', // Fill
												{
													text: 'Guardar',
													iconCls: 'icon-save',
													handler: function(){
														grid2.getSelectionModel().selectAll();
														longitud= grid2.getSelectionModel().getSelection().length;
														lista_usuarios = new Array(longitud);
														i=0;
														while(i < longitud)
														{											
															lista_usuarios[i]=grid2.getSelectionModel().getSelection()[i].data['nombreUsuario'];
															i=i+1;
														}	
														grid2.getSelectionModel().deselectAll();											
														Ext.Ajax.request({
															url: 'asignarUsuarios_desdeABMRol',
															params: {
																id_rol: id,
																lista_usuarios:Ext.encode(lista_usuarios)
															},
															success: function() {
																Ext.Msg.show({ 		title: '<br><p align="center"><b>ALPHA MANAGER</b></p>', //<- el título del diálogo  
																					msg: 'Usuarios asignados correctamente', 	icon: 'ext-mb-ok',
																});	
															},
															failure: function() {
																Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>',   
																				msg: 'Error en la asignacion de usuarios', 	icon: 'ext-mb-error',
																});
															}
														})
												}
												}]
											}
									}),{
									border: false
								}]
							});					
							win2.show();						
						},
						ddPermisos: function(data){
							var grid3, grid4;
							nombre = extraer(data, '&nombreRol=', '&descripcion=');		id = extraer(data, 'id=', '&');
                            win4 = Ext.create('widget.window', {
								iconCls: 'icon-permiso',
								title: 'Drag and Drop - Asignar/Desasignar Permisos al Rol: ' + nombre,
								closable: true,
								plain: true,
								layout: 'fit',
								items: [displayPanel = Ext.create('Ext.Panel', {
											width : 550,	height : 250,
											layout  : {	type: 'hbox',	align: 'stretch'	},
											defaults  : { flex : 1 }, 
											items : [
													grid3 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'firstGridDDGroup',
																	dropGroup: 'secondGridDDGroup'
															},
														},
														store: Ext.create('Ext.data.Store', {
																	model: 'DataPermiso',
																	autoLoad: true,
																	proxy: {
																		type: 'ajax',
																		url: 'listarNoPermisos_Rol/'+ id,
																		reader: {
																			type: 'json',
																			successProperty: 'success',
																			root: 'data',
																			messageProperty: 'message'
																		},

																	}      
																}),
														columns:  [ {text: "<b>Permisos No Asignados</b>", flex: 1, sortable: true, dataIndex: 'nombrePermiso'} ],
														stripeRows : true
													}),
													grid4 = Ext.create('Ext.grid.Panel', {
														multiSelect: true,
														viewConfig: {
															plugins: {
																	ptype: 'gridviewdragdrop',
																	dragGroup: 'secondGridDDGroup',
																	dropGroup: 'firstGridDDGroup'
																},
														},
														store: Ext.create('Ext.data.Store', {
																model: 'DataPermiso',
																autoLoad: true,
																proxy: {
																	type: 'ajax',
																	url: 'listarPermisos_Rol/'+ id,
																	reader: {
																		type: 'json',
																		successProperty: 'success',
																		root: 'data',
																		messageProperty: 'message'
																	},

																}       
														}),
														columns  : [ {text: "<b>Permisos Asignados</b>", flex: 1, sortable: true, dataIndex: 'nombrePermiso'} ],
														stripeRows : true
													})
											],
											dockedItems: {
												xtype: 'toolbar',
												dock: 'bottom',
												items: ['->', // Fill
												{
													text: 'Guardar',
													iconCls: 'icon-save',
													handler: function(){
														grid4.getSelectionModel().selectAll();
														longitud= grid4.getSelectionModel().getSelection().length;
														lista_permisos = new Array(longitud);
														j=0;
														while(j < longitud)
														{											
															lista_permisos[j]=grid4.getSelectionModel().getSelection()[j].data['nombrePermiso'];
															j=j+1;
														}	
														grid4.getSelectionModel().deselectAll();
														/*if (lista_permisos[2]==='eliminar usuario'){
															Ext.Msg.alert(lista_permisos[2]);}		*/									
														Ext.Ajax.request({
															url: 'asignarPermisos_desdeABMRol',
															params: {
																id_rol: id,
																lista_permisos:Ext.encode(lista_permisos)
															},
															success: function() {
																Ext.Msg.show({ 		title: '<br><p align="center"><b>ALPHA MANAGER</b></p>', //<- el título del diálogo  
																					msg: 'Permisos asignados correctamente', 	icon: 'ext-mb-ok',
																});	
															},
															failure: function() {
																Ext.Msg.show({	title: '<br><p align="center"><b>ALPHA MANAGER</b></p>',   
																				msg: 'Error en la asignacion de permisos', 	icon: 'ext-mb-error',
																});
															}
														})
												}
												}]
											}
									}),{
									border: false
								}]
							});					
							win4.show();						
						}
					}
				}, {
                    region: 'center',
					xtype: 'writergrid',            
					itemId: 'grid',
					title: 'LISTADO DE ROLES ',
					flex: 1,        
					//width: 470,
					//height: 380,
					store: store,					
					listeners: {
						selectionchange: function(selModel, selected) {
							win.child('#form').setActiveRecord(selected[0] || null);
						}
					}
				}] 
            });
            getPermisos();
            win.show();
            
});


    function extraer(texto, etqini, etqfin)
	{
		var ind0, ind1, parte ="";
		ind0 = texto.indexOf(etqini);
		if (ind0 >=0)
		{
			ind1 = texto.indexOf(etqfin);
		if (ind1>ind0)
			parte = texto.substring(ind0+etqini.length, ind1);
		}
		return parte;
	}

